label: Invalidate link colors on style change
authorBenjamin Otte <otte@redhat.com>
Wed, 5 Feb 2014 12:36:33 +0000 (13:36 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 5 Feb 2014 12:38:54 +0000 (13:38 +0100)
Discovered-by: Timm Bäder <mail@baedert.org>
https://bugzilla.gnome.org/show_bug.cgi?id=721309

gtk/gtklabel.c

index f0ff935474b2214d90356fcfe4de8f4695819d4a..4d0256f7443a39ba6b922433725686701d558101 100644 (file)
@@ -362,6 +362,7 @@ static void gtk_label_size_allocate     (GtkWidget        *widget,
                                          GtkAllocation    *allocation);
 static void gtk_label_state_flags_changed   (GtkWidget        *widget,
                                              GtkStateFlags     prev_state);
+static void gtk_label_style_updated     (GtkWidget        *widget);
 static gboolean gtk_label_draw          (GtkWidget        *widget,
                                          cairo_t          *cr);
 static gboolean gtk_label_focus         (GtkWidget         *widget,
@@ -545,6 +546,7 @@ gtk_label_class_init (GtkLabelClass *class)
   widget_class->destroy = gtk_label_destroy;
   widget_class->size_allocate = gtk_label_size_allocate;
   widget_class->state_flags_changed = gtk_label_state_flags_changed;
+  widget_class->style_updated = gtk_label_style_updated;
   widget_class->query_tooltip = gtk_label_query_tooltip;
   widget_class->draw = gtk_label_draw;
   widget_class->realize = gtk_label_realize;
@@ -3880,6 +3882,18 @@ gtk_label_state_flags_changed (GtkWidget     *widget,
     GTK_WIDGET_CLASS (gtk_label_parent_class)->state_flags_changed (widget, prev_state);
 }
 
+static void 
+gtk_label_style_updated (GtkWidget *widget)
+{
+  GtkLabel *label = GTK_LABEL (widget);
+  GtkLabelPrivate *priv = label->priv;
+
+  GTK_WIDGET_CLASS (gtk_label_parent_class)->style_updated (widget);
+
+  if (priv->select_info && priv->select_info->links)
+    gtk_label_update_layout_attributes (label);
+}
+
 static void
 get_layout_location (GtkLabel  *label,
                      gint      *xp,